
t = db.mod1;
t.drop();

t.save({a: 1});
t.save({a: 2});
t.save({a: 11});
t.save({a: 20});
t.save({a: "asd"});
t.save({a: "adasdas"});

assert.eq(2, t.find("this.a % 10 == 1").itcount(), "A1");
assert.eq(2, t.find({a: {$mod: [10, 1]}}).itcount(), "A2");
assert.eq(0,
          t.find({a: {$mod: [10, 1]}}).explain("executionStats").executionStats.totalKeysExamined,
          "A3");

t.ensureIndex({a: 1});

assert.eq(2, t.find("this.a % 10 == 1").itcount(), "B1");
assert.eq(2, t.find({a: {$mod: [10, 1]}}).itcount(), "B2");

assert.eq(1, t.find("this.a % 10 == 0").itcount(), "B3");
assert.eq(1, t.find({a: {$mod: [10, 0]}}).itcount(), "B4");
assert.eq(4,
          t.find({a: {$mod: [10, 1]}}).explain("executionStats").executionStats.totalKeysExamined,
          "B5");

assert.eq(1, t.find({a: {$gt: 5, $mod: [10, 1]}}).itcount());
